package com.example.readxml;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.util.Xml;

import com.example.bean.News;

public class NewsOp {
    //定义一个方法获取servlet中xml的信息
	public static List<News> getNewsList() throws Exception {
		//给定指定的servlet
        String path="http://10.221.213.187:8080/NewsServer/NewsServlet";
        URL url=new URL(path);
        //以下3条经常使用的语句
        HttpURLConnection conn=(HttpURLConnection) url.openConnection();
        conn.setConnectTimeout(10000);
        conn.setRequestMethod("GET");
        if(conn.getResponseCode()==200){
        	InputStream is=conn.getInputStream();
        	return praseXML(is);
        }
		return null;
	}
          //解析xml文件
	private static List<News> praseXML(InputStream is) throws Exception {
		List<News> newses = null;
		News news = null;
		// 创建一个xml文件解析器
		XmlPullParser xmlPullParser = Xml.newPullParser();
		xmlPullParser.setInput(is, "UTF-8");
		// 开始读取xml
		int event = xmlPullParser.getEventType();// 触发第一个开始事件
		while (event != XmlPullParser.END_DOCUMENT) {
			switch (event) {
			case XmlPullParser.START_DOCUMENT:
				// 开始事件，只会触发一次,做一些初始化工作
				newses = new ArrayList<News>();
				break;
			case XmlPullParser.START_TAG: 
				if (xmlPullParser.getName().equals("news")) {
					news = new News();
					String id = xmlPullParser.getAttributeValue(0);
					news.setId(id);
				}
				if (xmlPullParser.getName().equals("title")) {
					// 到达name节点，要取name节点后的文本值
					String title = xmlPullParser.nextText();
					news.setTitle(title);
				}
				if (xmlPullParser.getName().equals("linkaddr")) {
					String linkaddr = xmlPullParser.nextText();
					news.setLinkaddr(linkaddr);
				}
				if (xmlPullParser.getName().equals("timelen")) {
					int timelen = Integer.parseInt(xmlPullParser.nextText());
					news.setTimelen(timelen);
				}
				break;
			case XmlPullParser.END_TAG:
				if (xmlPullParser.getName().equals("news")) {
					// 到达star结束结点，把一个对象放到集合中
					newses.add(news);
				}
				break;
			}
			// 保证解析器的指针向下移动
			event = xmlPullParser.next();
		}
		return newses;
	}

}
